#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QImage>
#include <QString>
#include <QFileDialog>
#include "compresor.h"
#include <QtCore>
#include <QtGui>
#include <QTime>
#include <QFile>

namespace Ui {
    class MainWindow;
}

class MainWindow : public QMainWindow {
    Q_OBJECT
public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();

signals:
    void opened_bitmap(QImage *image);      //otwarta bitmapa
    void compress(QString path);            //kompresuj do pliku
    void decompress(QString path);          //dekompresuj z pliku
    void block_size_changed(int value);     //nowy rozmiar bloku
    void predictor_changed(int predictor);  //zmiana predyktora

protected:
    void changeEvent(QEvent *e);

private:
    Ui::MainWindow *ui;
    QImage *bitmap, *debitmap;                         //otwarta bitmapa
    compresor *process;
    void block_size_lock();
    void block_size_unlock();
    float CP, bitrate, mean, var;
    int compression_time, decompression_time;
    short *data;
    QTime time;
    QString picture, file, defile;

private slots:
    void open_bitmap();                     //otwiera plik
    void start_compression();               //pobiera ścieżkę i zaczyna kompresję
    void start_decompression();             //pobiera ścieżkę i zaczyna dekompresję
    void block_size_change();               //zmiana rozmiaru bloku
    void predictors();                      //wybór predyktora
    void bitmap_compressed();               //bitmapa skompresowana
    void bitmap_decompressed(QImage *image);             //bitmapa zdekompresowana
    void statistic();                       //statystyka kompresji
    void new_data(short *value);            //błędy predykcji
};

#endif // MAINWINDOW_H
